for..in

Доступность

Flash Player 5.

Синтаксис

for(variableIterant in object){
  statement(s); 
}

Параметры

variableIterant Имя переменной, выступающей в роли итеранта (iterant). Этой переменной последовательно присваивается каждое свойство объекта или элемента массива.

object Имя итерируемого объекта.

statement(s) Инструкции, выполняемые при каждой итерации.

Возвращает

Ничего.

Описание

Выражение; производит итерации над свойствами объекта или элементов массива и выполняет statement для каждого свойства или элемента. Методы объекта действием for..in не перечисляются.

Некоторые свойства не могут быть перечислены действием for..in. Например, не перечисляются свойства мувиклипа, такие как _x и _y. Во внешних файлах классов статические члены не перечисляются, в отличие от членов экземпляра.

Выражение for..in производит итерирование по свойствам объектов в итерируемой цепочке прототипа объекта. Свойства объекта перечисляются первыми, затем свойства их непосредственных прототипов, затем свойства прототипов прототипов и так далее. Выражение for..in не перичисляет одно и то же имя свойства дважды. Если объект child имеет прототип parent и в обоих имеется свойство prop, то выражение for..in, примененное для child, перичисляет prop для child, но игнорирует аналогичное свойство в parent.

Фигурные скобки ({}), применяемые для указания границ блока выражений, исполняемых в цикле for..in необязательны, если имеется только одно выражение.

Если вы записываете цикл for..in в файл классов (внешний файл AS), то члены экземпляра не доступны для зацикливания, зато статические члены доступны. Однако, если вы запишите цикл for..in в файл FLA для экземпляра класса, то члены экземпляра будут доступны, а статические нет.

Примеры

Следующий пример показывает использование for..in для итерирования по свойствам объекта:

var myObject:Object = {name:"Тара", age:27, city:"Сан Франциско"};
for (var name in myObject) {
  trace("myObject."+name+" = "+myObject[name]);
}

//в окне output
myObject.name = Тара
myObject.age = 27
myObject.city = Сан Франциско

Следующий пример показывает использование for..in для итерирования по элементам массива:

var myArray:Array = new Array("один", "два", "три");
for (var index in myArray) 
  trace("myArray["+index+"] = " + myArray[index]);

// в окне output:
myArray[2] = один
myArray[1] = два
myArray[0] = три

Следующий пример использует оператор typeof в цикле for..in для итерирования по заданному типу дочерних объектов:

for (var name in this) {
  if (typeof (this[name]) == "movieclip") {
    trace("Имеется дочерний мувиклип с именем "+name);
  }
}

Замечание: Если имеется несколько мувиклипов, то будут выведены имена экземпляров этих клипов.

Следующий пример перечисляет потомков мувиклипа и устанавливает проигрывание в каждом из них на кадр 2. Мувиклип RadioButtonGroup является родительским с несколькими потомками: _RedRadioButton_, _GreenRadioButton_ и _BlueRadioButton.

for (var name in RadioButtonGroup) {
  RadioButtonGroup[name].gotoAndStop(2);
}